#include <vector>
#include <string>
#include <exception>
#include <common/JSON.h>

#include <boost/range/irange.hpp>

using namespace std::literals::string_literals;

#include <gtest/gtest.h>

enum class ResultType
{
    Return,
    Throw
};

struct GetStringTestRecord
{
    const char * input;
    ResultType result_type;
    const char * result;
};

TEST(JSONSuite, SimpleTest)
{
    std::vector<GetStringTestRecord> test_data =
    {
        { R"("name")", ResultType::Return, "name" },
        { R"("Вафельница Vitek WX-1102 FL")", ResultType::Return, "Вафельница Vitek WX-1102 FL" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("184509")", ResultType::Return, "184509" },
        { R"("category")", ResultType::Return, "category" },
        { R"("Все для детей/Детская техника/Vitek")", ResultType::Return, "Все для детей/Детская техника/Vitek" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("В наличии")", ResultType::Return, "В наличии" },
        { R"("price")", ResultType::Return, "price" },
        { R"("2390.00")", ResultType::Return, "2390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("Карточка")", ResultType::Return, "Карточка" },
        { R"("position")", ResultType::Return, "position" },
        { R"("detail")", ResultType::Return, "detail" },
        { R"("actionField")", ResultType::Return, "actionField" },
        { R"("list")", ResultType::Return, "list" },
        { R"("http://www.techport.ru/q/?t=вафельница&sort=price&sdim=asc")", ResultType::Return, "http://www.techport.ru/q/?t=вафельница&sort=price&sdim=asc" },
        { R"("action")", ResultType::Return, "action" },
        { R"("detail")", ResultType::Return, "detail" },
        { R"("products")", ResultType::Return, "products" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Вафельница Vitek WX-1102 FL")", ResultType::Return, "Вафельница Vitek WX-1102 FL" },
        { R"("id")", ResultType::Return, "id" },
        { R"("184509")", ResultType::Return, "184509" },
        { R"("price")", ResultType::Return, "price" },
        { R"("2390.00")", ResultType::Return, "2390.00" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("Vitek")", ResultType::Return, "Vitek" },
        { R"("category")", ResultType::Return, "category" },
        { R"("Все для детей/Детская техника/Vitek")", ResultType::Return, "Все для детей/Детская техника/Vitek" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("В наличии")", ResultType::Return, "В наличии" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("isAuthorized")", ResultType::Return, "isAuthorized" },
        { R"("isSubscriber")", ResultType::Return, "isSubscriber" },
        { R"("postType")", ResultType::Return, "postType" },
        { R"("Новости")", ResultType::Return, "Новости" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("Электроплита GEFEST Брест ЭПНД 5140-01 0001")", ResultType::Return, "Электроплита GEFEST Брест ЭПНД 5140-01 0001" },
        { R"("price")", ResultType::Return, "price" },
        { R"("currencyCode")", ResultType::Return, "currencyCode" },
        { R"("RUB")", ResultType::Return, "RUB" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("trash_login")", ResultType::Return, "trash_login" },
        { R"("novikoff")", ResultType::Return, "novikoff" },
        { R"("trash_cat_link")", ResultType::Return, "trash_cat_link" },
        { R"("progs")", ResultType::Return, "progs" },
        { R"("trash_parent_link")", ResultType::Return, "trash_parent_link" },
        { R"("content")", ResultType::Return, "content" },
        { R"("trash_posted_parent")", ResultType::Return, "trash_posted_parent" },
        { R"("content.01.2016")", ResultType::Return, "content.01.2016" },
        { R"("trash_posted_cat")", ResultType::Return, "trash_posted_cat" },
        { R"("progs.01.2016")", ResultType::Return, "progs.01.2016" },
        { R"("trash_virus_count")", ResultType::Return, "trash_virus_count" },
        { R"("trash_is_android")", ResultType::Return, "trash_is_android" },
        { R"("trash_is_wp8")", ResultType::Return, "trash_is_wp8" },
        { R"("trash_is_ios")", ResultType::Return, "trash_is_ios" },
        { R"("trash_posted")", ResultType::Return, "trash_posted" },
        { R"("01.2016")", ResultType::Return, "01.2016" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("merchantId")", ResultType::Return, "merchantId" },
        { R"("13694_49246")", ResultType::Return, "13694_49246" },
        { R"("cps-source")", ResultType::Return, "cps-source" },
        { R"("wargaming")", ResultType::Return, "wargaming" },
        { R"("cps_provider")", ResultType::Return, "cps_provider" },
        { R"("default")", ResultType::Return, "default" },
        { R"("errorReason")", ResultType::Return, "errorReason" },
        { R"("no errors")", ResultType::Return, "no errors" },
        { R"("scid")", ResultType::Return, "scid" },
        { R"("isAuthPayment")", ResultType::Return, "isAuthPayment" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("rubric")", ResultType::Return, "rubric" },
        { R"("")", ResultType::Return, "" },
        { R"("rubric")", ResultType::Return, "rubric" },
        { R"("Мир")", ResultType::Return, "Мир" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("__ym")", ResultType::Return, "__ym" },
        { R"("ecommerce")", ResultType::Return, "ecommerce" },
        { R"("impressions")", ResultType::Return, "impressions" },
        { R"("id")", ResultType::Return, "id" },
        { R"("863813")", ResultType::Return, "863813" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Happy, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Happy, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("863839")", ResultType::Return, "863839" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Pretty kitten, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Pretty kitten, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("863847")", ResultType::Return, "863847" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Little tiger, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Little tiger, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911480")", ResultType::Return, "911480" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Puppy, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Puppy, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911484")", ResultType::Return, "911484" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Little bears, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Little bears, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911489")", ResultType::Return, "911489" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Dolphin, возраст 2-4 года, трикотаж")", ResultType::Return, "Футболка детская 3D Dolphin, возраст 2-4 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911496")", ResultType::Return, "911496" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Pretty, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Pretty, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911504")", ResultType::Return, "911504" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Fairytale, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Fairytale, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911508")", ResultType::Return, "911508" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Kittens, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Kittens, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911512")", ResultType::Return, "911512" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Sunshine, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Sunshine, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911516")", ResultType::Return, "911516" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Dog in bag, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Dog in bag, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911520")", ResultType::Return, "911520" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Cute puppy, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Cute puppy, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911524")", ResultType::Return, "911524" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Rabbit, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Rabbit, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("911528")", ResultType::Return, "911528" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Футболка детская 3D Turtle, возраст 1-2 года, трикотаж")", ResultType::Return, "Футболка детская 3D Turtle, возраст 1-2 года, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("390.00")", ResultType::Return, "390.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("888616")", ResultType::Return, "888616" },
        { R"("name")", ResultType::Return, "name" },
        { "\"3Д Футболка мужская \\\"Collorista\\\" Светлое завтра р-р XL(52-54), 100% хлопок, трикотаж\"", ResultType::Return, "3Д Футболка мужская \"Collorista\" Светлое завтра р-р XL(52-54), 100% хлопок, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Одежда и обувь/Мужская одежда/Футболки/")", ResultType::Return, "/Одежда и обувь/Мужская одежда/Футболки/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("406.60")", ResultType::Return, "406.60" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("913361")", ResultType::Return, "913361" },
        { R"("name")", ResultType::Return, "name" },
        { R"("3Д Футболка детская World р-р 8-10, 100% хлопок, трикотаж")", ResultType::Return, "3Д Футболка детская World р-р 8-10, 100% хлопок, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("470.00")", ResultType::Return, "470.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("913364")", ResultType::Return, "913364" },
        { R"("name")", ResultType::Return, "name" },
        { R"("3Д Футболка детская Force р-р 8-10, 100% хлопок, трикотаж")", ResultType::Return, "3Д Футболка детская Force р-р 8-10, 100% хлопок, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("470.00")", ResultType::Return, "470.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("913367")", ResultType::Return, "913367" },
        { R"("name")", ResultType::Return, "name" },
        { R"("3Д Футболка детская Winter tale р-р 8-10, 100% хлопок, трикотаж")", ResultType::Return, "3Д Футболка детская Winter tale р-р 8-10, 100% хлопок, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("470.00")", ResultType::Return, "470.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("913385")", ResultType::Return, "913385" },
        { R"("name")", ResultType::Return, "name" },
        { R"("3Д Футболка детская Moonshine р-р 8-10, 100% хлопок, трикотаж")", ResultType::Return, "3Д Футболка детская Moonshine р-р 8-10, 100% хлопок, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("470.00")", ResultType::Return, "470.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("id")", ResultType::Return, "id" },
        { R"("913391")", ResultType::Return, "913391" },
        { R"("name")", ResultType::Return, "name" },
        { R"("3Д Футболка детская Shaman р-р 8-10, 100% хлопок, трикотаж")", ResultType::Return, "3Д Футболка детская Shaman р-р 8-10, 100% хлопок, трикотаж" },
        { R"("category")", ResultType::Return, "category" },
        { R"("/Летние товары/Летний текстиль/")", ResultType::Return, "/Летние товары/Летний текстиль/" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("")", ResultType::Return, "" },
        { R"("price")", ResultType::Return, "price" },
        { R"("470.00")", ResultType::Return, "470.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("/retailrocket/")", ResultType::Return, "/retailrocket/" },
        { R"("position")", ResultType::Return, "position" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/")", ResultType::Return, "/911488/futbolka-detskaya-3d-dolphin-vozrast-1-2-goda-trikotazh/" },
        { R"("usertype")", ResultType::Return, "usertype" },
        { R"("visitor")", ResultType::Return, "visitor" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("__ym")", ResultType::Return, "__ym" },
        { R"("ecommerce")", ResultType::Return, "ecommerce" },
        { R"("impressions")", ResultType::Return, "impressions" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("experiments")", ResultType::Return, "experiments" },
        { R"("lang")", ResultType::Return, "lang" },
        { R"("ru")", ResultType::Return, "ru" },
        { R"("los_portal")", ResultType::Return, "los_portal" },
        { R"("los_level")", ResultType::Return, "los_level" },
        { R"("none")", ResultType::Return, "none" },
        { R"("__ym")", ResultType::Return, "__ym" },
        { R"("ecommerce")", ResultType::Return, "ecommerce" },
        { R"("currencyCode")", ResultType::Return, "currencyCode" },
        { R"("RUR")", ResultType::Return, "RUR" },
        { R"("impressions")", ResultType::Return, "impressions" },
        { R"("name")", ResultType::Return, "name" },
        { R"("Чайник электрический Mystery MEK-1627, белый")", ResultType::Return, "Чайник электрический Mystery MEK-1627, белый" },
        { R"("brand")", ResultType::Return, "brand" },
        { R"("Mystery")", ResultType::Return, "Mystery" },
        { R"("id")", ResultType::Return, "id" },
        { R"("187180")", ResultType::Return, "187180" },
        { R"("category")", ResultType::Return, "category" },
        { R"("Мелкая бытовая техника/Мелкие кухонные приборы/Чайники электрические/Mystery")", ResultType::Return, "Мелкая бытовая техника/Мелкие кухонные приборы/Чайники электрические/Mystery" },
        { R"("variant")", ResultType::Return, "variant" },
        { R"("В наличии")", ResultType::Return, "В наличии" },
        { R"("price")", ResultType::Return, "price" },
        { R"("1630.00")", ResultType::Return, "1630.00" },
        { R"("list")", ResultType::Return, "list" },
        { R"("Карточка")", ResultType::Return, "Карточка" },
        { R"("position")", ResultType::Return, "position" },
        { R"("detail")", ResultType::Return, "detail" },
        { R"("actionField")", ResultType::Return, "actionField" },
        { R"("list")", ResultType::Return, "list" },
        { "\0\"", ResultType::Throw, "JSON: expected \", got \0" },
        { "\"/igrushki/konstruktory\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/1290414/komplekt-zhenskiy-dzhemper-plusbryuki-m-254-09-malina-plustemno-siniy-\0a", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Творчество/Рисование/Инструменты и кра\0a", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Строительство и ремонт/Силовая техника/Зарядные устройства для автомобильных аккумуляторов/Пуско-зарядные устр\xD0\0a", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Строительство и ремонт/Силовая техника/Зарядные устройств\xD0\0t", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Строительство и ремонт/Силовая техника/Зарядные устройства для автомобиль\0k", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\0t", ResultType::Throw, "JSON: expected \", got \0" },
        { "\"/Хозтовары/Хранение вещей и организа\xD1\0t", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Хозтовары/Товары для стир\0a", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"li\0a", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/734859/samolet-radioupravlyaemyy-istrebitel-rabotaet-o\0k", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/kosmetika-i-parfyum/parfyumeriya/mu\0t", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/ko\0\x04", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "", ResultType::Throw, "JSON: begin >= end." },
        { "\"/stroitelstvo-i-remont/stroit\0t", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/stroitelstvo-i-remont/stroitelnyy-instrument/av\0k", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/s\0a", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Строительство и ремонт/Строительный инструмент/Изм\0e", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/avto/soputstvuy\0l", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/str\0\xD0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Отвертка 2 в 1 \\\"TUNDRA basic\\\" 5х75 мм (+,-) \0\xFF", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/stroitelstvo-i-remont/stroitelnyy-instrument/avtoinstrumen\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Мелкая бытовая техника/Мелки\xD0\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Пряжа \\\"Бамбук стрейч\\0\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Карандаш чёрнографитны\xD0\0\xD0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Творчество/Рукоделие, аппликации/Пряжа и шерсть для \xD0\0l", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/1071547/karandash-chernografitnyy-volshebstvo-nv-kruglyy-d-7-2mm-dl-176mm-plast-tuba/\0e", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"ca\0e", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"ca\0e", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/1165424/chipbord-vyrubnoy-dlya-skrapbukinga-malyshi-mikki-maus-disney-bebi\0t", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/posuda/kuhonnye-prinadlezhnosti-i-i\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Канцтовары/Ежедневники и блокн\xD0\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/kanctovary/ezhednevniki-i-blok\0a", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Стакан \xD0\0a", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Набор бумаги для скрапбукинга \\\"Мои первый годик\\\": Микки Маус, Дисней бэби, 12 листов 29.5 х 29.5 см, 160\0\x80", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"c\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Органайзер для хранения аксессуаров, \0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"quantity\00", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Сменный блок для тетрадей на кольцах А5, 160 листов клетка, офсет \xE2\x84\0=", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Сувениры/Ф\xD0\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"\0\"", ResultType::Return, "\0" },
        { "\"\0\x04", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"va\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"ca\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"В \0\x04", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/letnie-tovary/z\0\x04", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Посудомоечная машина Ha\0=", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Крупная бытов\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Полочная акустическая система Magnat Needl\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"brand\00", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"pos\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"c\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"var\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Телевизоры и видеотехника/Всё для домашних кинотеатр\0=", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Флеш-диск Transcend JetFlash 620 8GB (TS8GJF62\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Табурет Мег\0\xD0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"variant\0\x04", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Катал\xD0\0\"", ResultType::Return, "Катал\xD0\0" },
        { "\"К\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Полочная акустическая система Magnat Needl\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"brand\00", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"pos\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"c\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"17\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/igrushki/razvivayusc\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Ключница \\\"\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Игр\xD1\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Игрушки/Игрушки для девочек/Игровые модули дл\xD1\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Крупная бытовая техника/Стиральные машины/С фронт\xD0\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\0 ", ResultType::Throw, "JSON: expected \", got \0" },
        { "\"Светодиодная лента SMD3528, 5 м. IP33, 60LED, зеленый, 4,8W/мет\xD1\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Сантехника/Мебель для ванных комнат/Стол\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\0o", ResultType::Throw, "JSON: expected \", got \0" },
        { "\"/igrushki/konstruktory\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/posuda/kuhonnye-prinadlezhnosti-i-instrumenty/kuhonnye-pr\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/1290414/komplekt-zhenskiy-dzhemper-plusbryuki-m-254-09-malina-plustemno-siniy-\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Творчество/Рисование/Инструменты и кра\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Строительство и ремонт/Силовая техника/Зарядные устройства для автомобильных аккумуляторов/Пуско-зарядные устр\xD0\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Строительство и ремонт/Силовая техника/Зарядные устройств\xD0\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Строительство и ремонт/Силовая техника/Зарядные устройства для автомобиль\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\0 ", ResultType::Throw, "JSON: expected \", got \0" },
        { "\"/Хозтовары/Хранение вещей и организа\xD1\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Хозтовары/Товары для стир\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"li\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/igrushki/igrus\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/734859/samolet-radioupravlyaemyy-istrebitel-rabotaet-o\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/kosmetika-i-parfyum/parfyumeriya/mu\00", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/ko\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/avto/avtomobilnyy\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/stroitelstvo-i-remont/stroit\00", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/stroitelstvo-i-remont/stroitelnyy-instrument/av\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/s\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Строительство и ремонт/Строительный инструмент/Изм\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/avto/soputstvuy\0\"", ResultType::Return, "/avto/soputstvuy\0" },
        { "\"/str\0k", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Отвертка 2 в 1 \\\"TUNDRA basic\\\" 5х75 мм (+,-) \0\xD0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/stroitelstvo-i-remont/stroitelnyy-instrument/avtoinstrumen\0=", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Чайник электрический Vitesse\0=", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Мелкая бытовая техника/Мелки\xD0\0\xD0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Пряжа \\\"Бамбук стрейч\\0о", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Карандаш чёрнографитны\xD0\0k", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Творчество/Рукоделие, аппликации/Пряжа и шерсть для \xD0\0\"", ResultType::Return, "/Творчество/Рукоделие, аппликации/Пряжа и шерсть для \xD0\0" },
        { "\"/1071547/karandash-chernografitnyy-volshebstvo-nv-kruglyy-d-7-2mm-dl-176mm-plast-tuba/\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"ca\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Подаро\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Средство для прочис\xD1\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"i\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/p\0\"", ResultType::Return, "/p\0" },
        { "\"/Сувениры/Магниты, н\xD0\0k", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Дерев\xD0\0=", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/prazdniki/svadba/svadebnaya-c\0\xD0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Канцт\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Праздники/То\xD0\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"v\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Косметика \xD0\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Спорт и отдых/Настольные игры/Покер, руле\xD1\0\xD0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"categ\0=", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/retailr\0k", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/retailrocket\0k", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Ежедневник недат А5 140л кл,ляссе,обл пв\0=", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/432809/ezhednevnik-organayzer-sredniy-s-remeshkom-na-knopke-v-oblozhke-kalkulyator-kalendar-do-\0\xD0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/1165424/chipbord-vyrubnoy-dlya-skrapbukinga-malyshi-mikki-maus-disney-bebi\0d", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/posuda/kuhonnye-prinadlezhnosti-i-i\0 ", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/Канцтовары/Ежедневники и блокн\xD0\0o", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"/kanctovary/ezhednevniki-i-blok\00", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Стакан \xD0\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"Набор бумаги для скрапбукинга \\\"Мои первый годик\\\": Микки Маус, Дисней бэби, 12 листов 29.5 х 29.5 см, 160\0\0", ResultType::Throw, "JSON: incorrect syntax (expected end of string, found end of JSON)." },
        { "\"c\0\"", ResultType::Return, "c\0" },
    };

    for (auto i : boost::irange(0, 1/*00000*/))
    {
        static_cast<void>(i);

        for (auto & r : test_data)
        {
            try
            {
                JSON j(r.input, r.input + strlen(r.input));

                ASSERT_EQ(j.getString(), r.result);
                ASSERT_TRUE(r.result_type == ResultType::Return);
            }
            catch (JSONException & e)
            {
                ASSERT_TRUE(r.result_type == ResultType::Throw);
                ASSERT_EQ(e.message(), r.result);
            }
        }
    }
}
